package com.tbit.uqbike.service.business;

import com.tbit.common.entity.view.PageResult;
import com.tbit.common.entity.view.Result;
import com.tbit.uqbike.object.pojo.Machine;
import com.tbit.uqbike.object.pojo.MachineFault;
import com.tbit.uqbike.object.pojo.dto.FaultReportDTO;
import com.tbit.uqbike.object.pojo.vo.MachineFaultLogVo;
import com.tbit.uqbike.object.pojo.vo.MachineFaultPersonVo;
import com.tbit.uqbike.object.pojo.vo.MachineFaultVehicleVo;
import com.tbit.uqbike.object.value.LoginInfo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

/**
 * @Author LHX
 * @ClassName FaultReportService
 * @Description
 * @date 2023/5/18 15:42
 * @Version 1.0
 */
public interface FaultReportService {
    /**
     * 分页查询故障上报详情
     *
     * @param faultReportDTO
     * @return
     */
    PageResult<MachineFaultLogVo> queryPageDetails(FaultReportDTO faultReportDTO);

    /**
     * 故障上报统计详情导出
     *
     * @param faultReportDTO
     * @return
     */
    Result exportDetails(FaultReportDTO faultReportDTO);

    /**
     * 故障上报车辆总览
     *
     * @param faultReportDTO
     * @return
     */
    PageResult<MachineFaultVehicleVo> queryPageVehicle(FaultReportDTO faultReportDTO);

    /**
     * 故障上报车辆总览导出
     *
     * @param faultReportDTO
     * @return
     */
    Result exportVehicle(FaultReportDTO faultReportDTO);

    /**
     * 故障上报人员总览
     *
     * @param faultReportDTO
     * @return
     */
    PageResult<MachineFaultPersonVo> queryPagePerson(FaultReportDTO faultReportDTO);

    /**
     * 故障上报人员总览导出
     *
     * @param faultReportDTO
     * @return
     */
    Result exportPerson(FaultReportDTO faultReportDTO);

    /**
     * 故障上报处理记录导出
     *
     * @param faultReportDTO .
     */
    Result exportRecord(FaultReportDTO faultReportDTO);


    /**
     * 添加故障车辆
     *
     * @param token        令牌
     * @param files        文件
     * @param userCode     车辆编号
     * @param machineFault 故障详情
     * @param lo           经度
     * @param la           纬度
     * @param mapType      地图类型
     * @param response     响应
     * @ignoreParams request
     */
    public void insert(MultipartFile[] files, MachineFault machineFault, HttpServletRequest request,
                       LoginInfo loginInfo, Machine machine,Integer brandId,String userPhone) throws Exception;

    /**
     * 删除车辆故障信息
     * @param machineId 车辆id
     * @return Result<Object>
     */
    Result<Object> backToNormal(Integer machineId);
}
